package com.sangeng.domain.entity.role;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

@Data
@TableName("sys_permission")
public class Permission implements Serializable {
    private static final long serialVersionUID = 1L;
    /** 权限ID */
    @TableId(type = IdType.AUTO,value = "id")
    private Long id;

    /** 权限名称 */
    @TableField("permission_name") // 显示指定数据库字段名
    private String permissionName;

    /** 权限标识码 */
    @TableField("permission_code") // 显示指定数据库字段名
    private String permissionCode;

    /** 权限类型：1-菜单 2-按钮  */
    @TableField("permission_type")
    private Integer permissionType;

    /** 父级权限ID，0表示顶级 */
    @TableField("parent_id")
    private Long parentId;

    /** 路由路径 */
    @TableField("path")
    private String path;

    /** 组件路径 */
    @TableField("component")
    private String component;

    /** 图标 */
    @TableField("icon")
    private String icon;

    /** 排序号 */
    @TableField("sort_order")
    private Integer sortOrder;

    /** 状态：0-启用 1-禁用 */
    @TableField("status")
    private Integer status;

    /** 是否外链：0-否 1-是 */
    @TableField("is_external")
    private Integer isExternal;

    /** 外链地址 */
    @TableField("external_url")
    private String externalUrl;

    /** 权限描述 */
    @TableField("description")
    private String description;

    /** 创建时间 */
    @TableField("create_time")
    private LocalDateTime createTime;

    /** 更新时间 */
    @TableField("update_time")
    private LocalDateTime updateTime;

    /** 创建人ID */
    @TableField("create_by")
    private Long createBy;

    /** 更新人ID */
    @TableField("update_by")
    private Long updateBy;

    // 如果有字段不需要映射到数据库，可以使用 @TableField(exist = false)
    // @TableField(exist = false)
    // private String extraField;
}
